import org.apache.shiro.crypto.hash.Sha256Hash

import br.academia.Departamento;
import br.academia.Funcionario;
import br.academia.Professor;
import br.atribicoes.professor.ClasseDoProfessor;
import br.atribicoes.professor.NivelDoProfessor;
import br.atribuicoes.professor.producaoAcademica.Status
import br.seguranca.*

class BootStrap {

	def init = { servletContext ->
		def user1 = new ShiroUser(username: "admin", passwordHash: new Sha256Hash("teste").toHex())
		user1.addToPermissions("*:*")
		user1.save()
		
		
		Status status = new Status(status: Status.ANALISE)
		status.save()
		
		Departamento departamento = Departamento.findByNome("DIN")
		if(!departamento){
			departamento = new Departamento(nome: "DIN", centro: "CTC")
			departamento.save()
		}
		
		Funcionario sec = Funcionario.findByUsername("sec")
		if(!sec){
			log.debug("funcionario sendo criado")
			sec = new Funcionario(username: "sec",
					passwordHash: new Sha256Hash("teste").toHex(), 
					nome: "Secretario",
					matricula: "555555", 
					departamento: departamento, 
					email: "sec@mail.com", 
					CPF: "070.824.859-48"
					)
			
			//TODO add permisao para secretario
			sec.addToPermissions("*:*")
			sec.save(flush: true)
		}
		
		Professor prof = Professor.findByUsername("sec")
		if(!sec){
			log.debug("professor sendo criado")
			sec = new Professor()(username: "prof", passwordHash: new Sha256Hash("teste").toHex(),
				departamento: departamento)
			sec.addToPermissions("*:*")
			sec.save()
		}
		
		ShiroRole perfilFuncionario = ShiroRole.findByName(ShiroRole.FUNCIONARIO)
		if(!perfilFuncionario){
			perfilFuncionario = new ShiroRole(name: ShiroRole.FUNCIONARIO)
			perfilFuncionario.save()
		}
		
		ShiroRole perfilSecretario = ShiroRole.findByName(ShiroRole.FUNCIONARIO)
		if(!perfilSecretario){
			perfilSecretario = new ShiroRole(name: ShiroRole.SECRETARIO)
			perfilSecretario.save()
		}
		
		/*
		 if(!class1){
		 ClasseDoProfessor classe1 = new ClasseDoProfessor(classe: "Professor Auxiliar");
		 classe1.save()
		 }
		 //ClasseDoProfessor classe2 = ClasseDoProfessor(calsse: "Professor Assistente"); classe2.save()
		 //ClasseDoProfessor classe3 = ClasseDoProfessor(calsse: "Professor Adjunto"); classe3.save()
		 //ClasseDoProfessor classe4 = ClasseDoProfessor(calsse: "Professor Associado"); classe4.save()
		 //ClasseDoProfessor classe5 = ClasseDoProfessor(calsse: "Professor Titular"); classe5.save()
		 //NivelDoProfessor nivelA = NivelDoProfessor(nivel = NivelDoProfessor.A); nivelA.save()
		 //NivelDoProfessor nivelB = NivelDoProfessor(nivel = NivelDoProfessor.B); nivelB.save()
		 //NivelDoProfessor nivelC = NivelDoProfessor(nivel = NivelDoProfessor.C); nivelC.save()
		 //NivelDoProfessor nivelD = NivelDoProfessor(nivel = NivelDoProfessor.D); nivelD.save()
		 */
	}
	def destroy = {
	}
}
